//----------------------------------------------------------------------------
//  XC program; finite element analysis code
//  for structural analysis and design.
//
//  Copyright (C)  Luis Claudio Pérez Tato
//
//  This program derives from OpenSees <http://opensees.berkeley.edu>
//  developed by the  «Pacific earthquake engineering research center».
//
//  Except for the restrictions that may arise from the copyright
//  of the original program (see copyright_opensees.txt)
//  XC is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or 
//  (at your option) any later version.
//
//  This software is distributed in the hope that it will be useful, but 
//  WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details. 
//
//
// You should have received a copy of the GNU General Public License 
// along with this program.
// If not, see <http://www.gnu.org/licenses/>.
//----------------------------------------------------------------------------
//DqPtrsConstraint.h
//constraint pointers deque.


#ifndef DQPTRSCONSTRAINT_H
#define DQPTRSCONSTRAINT_H

#include "DqPtrs.h"

class ExprAlgebra;

namespace XC {
class Constraint;

//!  @ingroup Set
//! 
//!  \brief Constraint pointers deque.
//! 
class DqPtrsConstraint: public DqPtrs<Constraint>
  {
  public:
    DqPtrsConstraint(CommandEntity *owr= nullptr);
    explicit DqPtrsConstraint(const std::deque<Constraint *> &ts);
    explicit DqPtrsConstraint(const std::set<const Constraint *> &ts);

    std::set<int> getTags(void) const;

    Constraint *buscaConstrainto(const int &tag);
    const Constraint *buscaConstrainto(const int &tag) const;

    void numera(void);
  };

DqPtrsConstraint operator+(const DqPtrsConstraint &,const DqPtrsConstraint &);
DqPtrsConstraint operator-(const DqPtrsConstraint &,const DqPtrsConstraint &);
DqPtrsConstraint operator*(const DqPtrsConstraint &,const DqPtrsConstraint &);

} //end of XC namespace
#endif

